﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SharpLite.Domain.DataInterfaces;
using DAEProde.Domain;

namespace DAEProde.Tests.Fake
{
    public class FakeTeamRepository : IRepository<Team>
    {
        public List<Team> equipos;

        public FakeTeamRepository()
        {
            equipos = new List<Team> { 
                            null, //id = 0
                            new Team { Name = "T1" }, //id = 1
                            new Team { Name = "T2" }, //id = 2
                            new Team { Name = "T3" }, //id = 3
                            new Team { Name = "T4" }  //id = 4
                            };
        }

        public IDbContext DbContext
        {
            get { throw new NotImplementedException(); }
        }

        public void Delete(Team entity)
        {
            equipos.Remove(entity);
        }

        public Team Get(int id)
        {
            if (equipos.Count - 1 >= id) //el primer elemento null no se cuenta (id = 0)
            {
                return equipos.ElementAt(id);
            }
            else
            {
                return null;
            }
        }

        public IQueryable<Team> GetAll()
        {
            return equipos.AsQueryable<Team>();
        }

        public Team SaveOrUpdate(Team entity)
        {
            if (equipos.Exists(t => t == entity))
            {
                var toUpdate = equipos.Single(t => t == entity);
                return entity;
            }
            else
            {
                equipos.Add(entity);
                return entity;
            }
        }
    }
}

